#! /usr/bin/env python
# coding=utf-8
from Bio import SeqIO
import sys
import argparse

dis = '''
对一个fasta文件 
删除指定列表 id的序列
v 0.1.0
'''


parser = argparse.ArgumentParser(description=dis)

parser.add_argument('-f', type=str, nargs='+',
    help='fasta文件') # 这里metavar指赋值的参数的说明 nargs 指只能给定一个

parser.add_argument('-r', type=str, nargs='+',
    help='存放id号的文件') 


parser.add_argument('-o', type=str, nargs='+',
    help='输出的fasta文件') 



# 获取参数
args = parser.parse_args()


if args.f == None:
    print('请给定fasta文件')
    parser.print_help()
    sys.exit(0)
else:
    infile = args.f[0]

if args.r == None:
    print('请给定删除列表文件')
    parser.print_help()
    sys.exit(0)
else:
    rmfile = args.r[0]

if args.o == None:
    print('请给定输出文件')
    parser.print_help()
    sys.exit(0)
else:
    outfile = args.o[0]


rm_lista = []

with open(rmfile) as fila:
    for i in fila:
        i = i.strip().upper().split('#')[0].strip()
        if i not in rm_lista and i != '':
            rm_lista.append(i)


outfile_handle = open(outfile,'w')
for i in SeqIO.parse(infile,'fasta'):
    if str(i.id).upper() in rm_lista:
        pass
    else:
        SeqIO.write(i,outfile_handle,'fasta')
